package com.xgk.boot.module.core.controller.admin.price.vo;


import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 价格规则VO
 */
@Schema(description = "新建/更新杂费项字段 Request VO")
@Data
public class PriceRuleSaveVO {

    private Long id;

    /**
     * 规则名称（如："VIP会员9折"）
     */
    @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "名称不能为空")
    @Size(max = 100, message = "名称不能超过100 个字符")
    private String ruleName;

    /**
     * 规则代码，唯一标识（如："VIP_9DISCOUNT"）
     */
    @Schema(description = "编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "编码不能为空")
    @Size(max = 100, message = "编码不能超过100 个字符")
    @Pattern(regexp = "^[A-Za-z0-9_-]{1,100}$", message = "编码格式为1-100位数字、字母、下划线或连字符")
    private String ruleCode;

    /**
     * 规则类型（0-通用基础收费项，1-特殊杂费项）
     * * 枚举 {@link com.xgk.boot.module.core.enums.biz.PriceRuleTypeEnum}
     */
    @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotNull(message = "类型不能为空")
    private Integer ruleType;

    /**
     * 特殊规则代码（当rule_type=1时，关联special_rule_dictionary表的rule_code）
     */
    @Schema(description = "代码/编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "代码/编码不能为空")
    @Size(max = 50, message = "代码/编码不能超过50 个字符")
    private String feeItemCode;

    /**
     * 计算规则（如："固定价"、"附加率"、"固定上浮"等）
     *
     * * 枚举 {@link com.xgk.boot.module.core.enums.biz.CalcTypeEnum}
     *
     */
    @Schema(description = "规则名", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "规则名不能为空")
    @Size(max = 100, message = "规则名不能超过100 个字符")
    private String calculationRule;

    /**
     * 规则值（如：0.1表示原价1.1倍，100.00表示固定价）
     */
    @Schema(description = "杂费项名称",  example = "Json Bo")
//    @NotNull(message = "杂费项值不能为空")
    private BigDecimal ruleValue;

//    @Schema(description = "扩展规则类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
//    private Integer ruleExtendType;
//
//    /**
//     * 扩展规则配置内容 json格式string
//     * Segmented_Deduction : 前含后不含规则，如没有rangeBegin时,默认为0;没有rangeEnd时,默认为无穷大
//     * {[rangeBegin:xx,rangeEnd:xx,calculationRule:xx,ruleValue:xx],[rangeBegin:xx,rangeEnd:xx, calculationRule:xx,ruleValue:xx]}
//     */
    @Schema(description = "扩展规则配置值", example = "{[rangeBegin:xx,rangeEnd:xx,calculationRule:xx,ruleValue:xx],[rangeBegin:xx,rangeEnd:xx, calculationRule:xx,ruleValue:xx]}")
    private String ruleExtendValue;

    /**
     * 规则描述（详细说明规则内容）
     */
    private String description;


    /**
     * 状态（0-停用，1-启用）
     */
    private Integer status;

}
